package cn.com.dcsgo.service;

import cn.com.dcsgo.domain.Prod;
import cn.com.dcsgo.dto.*;
import cn.com.dcsgo.vo.ProdVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 针对表【prod(商品表)】的数据库操作Service
 *
 * @author Dcsgo
 * @since 2025-10-14 08:45:29
 */
public interface ProdService extends IService<Prod> {

    /**
     * 分页查询商品信息
     *
     * @param pageDTO      分页参数
     * @param prodQueryDTO 查询参数
     * @return 分页数据
     */
    Page<Prod> getPage(PageDTO pageDTO, ProdQueryDTO prodQueryDTO);

    /**
     * 逻辑删除商品，修改状态为-1
     *
     * @param prodIds 商品ID列表
     * @return true-删除成功，false-删除失败
     */
    boolean logicalRemoveBatchByIds(List<Long> prodIds);

    /**
     * 添加商品
     *
     * @param prodAddDTO 商品信息
     * @return true-添加成功，false-添加失败
     */
    boolean save(ProdAddDTO prodAddDTO);

    /**
     * 获取商品信息
     *
     * @param prodId 商品ID
     * @return 商品信息
     */
    ProdVO getProdVOById(Long prodId);

    /**
     * 更新商品
     *
     * @param prodUpdateDTO 商品信息
     * @return true-更新成功，false-更新失败
     */
    boolean update(ProdUpdateDTO prodUpdateDTO);

    /**
     * 获取商品信息
     *
     * @param prodId 商品ID
     * @return 商品及其sku信息
     */
    ProdVO getProdAndSkuInfoById(Long prodId);

    /**
     * 更新商品库存
     * @param stockUpdateDTO  更新库存请求参数
     * @return true-更新成功，false-更新失败
     */
    boolean updateStock(StockUpdateDTO stockUpdateDTO);
}
